[% setvar title The Perl 6 Summary of the week ending 20031012 %]
<div id="archive-notice">
    <h3>This file is part of the Perl 6 Archive</h3>
    <p>To see what is currently happening visit <a href="http://www.perl6.org/">http://www.perl6.org/</a></p>
</div>
<div class='pod'>
<a name='The Perl 6 Summary of the week ending 20031012'></a><h1>The Perl 6 Summary of the week ending 20031012</h1>
<p>Good afternoon readers. You find me sitting comfortably and tired
after a vaguely frantic week involving large amounts of new (and
huge) equipment, the delivery of a new Mini Cooper, and four days
offline at a large format photography workshop (photos will be going
online soonish, if you're interested). All of which hopefully goes
some way to explaining the fact that I've only just started writing
the summary at ten to four on Tuesday.</p>
<p>We start (and finish) with the internals list.</p>
<a name='New PMC compiler'></a><h2>New PMC compiler</h2>
<p>Leo T&ouml;tsch isn't exactly happy with the current
<b><i>classes/pmc2c.pl</i></b> PMC compiler. He outlined the drawbacks as he
sees them, proposed a scheme for reimplementing it, and asked for
comments. Dan said that so long as the resulting code is clearer than
the current PMC compiler, Leo should go for it. So he did.</p>
<p><a href='http://groups.google.com/groups?threadm=3F81348A.4050600@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='The Status of Language, Credit Where It's Due'></a><h2>The Status of Language, Credit Where It's Due</h2>
<p>Melvin Smith has added a <b><i>LANGUAGES.STATUS</i></b> file in the <b><i>languages/</i></b>
subdirectory and asked for language authors to add summaries of the
various language subdirectories to the file.</p>
<p>Fresh from this success he added a <b><i>CREDITS</i></b> file for giving credit
where it's due. Rumours of an entry reading</p>
<pre>    N: Leon Brocard
    D: Running Joke</pre>
<p>are (currently) false.</p>
<p>Later in the week, <b><i>LANGUAGES.STATUS</i></b> was extended to cover both the
languages found in <b><i>languages/</i></b> but any other languages that people
were working on and making available outside the Parrot distribution
for whatever reason.</p>
<p><a href='http://groups.google.com/groups?threadm=5.1.1.6.2.20031006233300.06005698@pop.mindspring.com' target='_blank'>groups.google.com</a></p>
<p><a href='http://groups.google.com/groups?threadm=5.1.1.6.2.20031007003542.0613c818@pop.mindspring.com' target='_blank'>groups.google.com</a></p>
<a name='Binary MMD vtable functions are go'></a><h2>Binary MMD vtable functions are go</h2>
<p>Dan's solved an off by one error with multimethod dispatch and checked
everything in, so now Parrot has working two argument multimethod
dispatch. Hurrah! There's still lots it doesn't do mind, but getting
started is always good.</p>
<p><a href='http://groups.google.com/groups?threadm=Pine.LNX.4.58.0310070846320.16822@sprite.sidhe.org' target='_blank'>groups.google.com</a></p>
<a name='Attacking the Unicode Monster'></a><h2>Attacking the Unicode Monster</h2>
<p>Dan's searching for a Unicode Monster Wrangler. ICU is now building
on enough platforms that the time has come to build an encoding and
chartype library for it. Volunteers gratefully received.</p>
<p>Jeff Clites and Michael Scott have both been poking at it a bit;
hopefully they'll be able to put their heads together and emerge with
something wonderful.</p>
<p><a href='http://groups.google.com/groups?threadm=Pine.LNX.4.58.0310071149230.16822@sprite.sidhe.org' target='_blank'>groups.google.com</a></p>
<a name='More NCI stuff'></a><h2>More NCI stuff</h2>
<p>Dan's been a busy boy this week. Parrot now comes with
<b><i>library/postgres.pasm</i></b>, an interface to libpq (the C library that
talks to Postgres). These NCI interface files are currently built by
hand. Tim Bunce wondered if it might be possible to
ExtUtils::XSBuilder to generate PASM from C header files instead of
XS code. It was generally agreed that this would be a cool thing, but
it's not been done yet.</p>
<p><a href='http://groups.google.com/groups?threadm=Pine.LNX.4.58.0310071556120.16822@sprite.sidhe.org' target='_blank'>groups.google.com</a></p>
<p><a href='http://www.postgresql.org/' target='_blank'>www.postgresql.org</a></p>
<a name='The Parrot Stack and Z-Machine'></a><h2>The Parrot Stack and Z-Machine</h2>
<p>Amir Karger is working on getting his head 'round the Z-Machine (The
virtual machine that runs Zork and the other Infocom games, amongst
others) by writing code to translate Z-code into a Perl
executable. He came up with a problem with saving and restoring the
stack in order to save the game state.</p>
<p><a href='http://groups.google.com/groups?threadm=20031007164754.57253.qmail@web40703.mail.yahoo.com' target='_blank'>groups.google.com</a></p>
<a name='References'></a><h2>References</h2>
<p>Leo's been giving the Reference PMC a hard look and, as a result,
suggests adding a couple of handy ops, <code>deref</code> and <code>ref</code> (which
finds the type of the thing the reference refers to) to use with
them. Melvin Smith pointed out that, actually we only needed one of
Leo's proposed ops. On the other hand, as Nicholas Clark pointed out,
<code>ref</code> avoids the need to grab another PMC register, which may cause
a register spill. On the gripping hand, Melvin argued that spillage
is pretty rare with the number of registers Parrot has.</p>
<p><a href='http://groups.google.com/groups?threadm=3F842968.1010606@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='The program's ending! DESTROY everything!'></a><h2>The program's ending! DESTROY everything!</h2>
<p>J&uuml;rgen B&ouml;mmels found a subtle bug where objects that had
active destruction weren't having their destroy functions called
correctly (at all) when parrot terminated. After a couple of goes
round the '&quot;this would be so much easier if we were all in the same
room&quot; misunderstanding' loop, the Right Thing was settled upon and
implemented.</p>
<p><a href='http://groups.google.com/groups?threadm=m2fzi2y78e.fsf@helium.physik.uni-kl.de' target='_blank'>groups.google.com</a></p>
<a name='An interesting task for the evil'></a><h2>An interesting task for the evil</h2>
<p>One of the things that Dan would really like to be able to promise
with Parrot's GC is ordered destruction. Taking a leaf out of my
lightning talk on complexity management, he noted that &quot;we just need
to order the PMCs before destroying them, to make sure we don't call
the destructor for a PMC before we destroy the things that depend on
it&quot; and asked for volunteers to implement it.</p>
<p>Dave Mitchell spoilt the understatement party by pointing out that,
in the presence of circular dependencies things got a little more
complicated (but not that much more complicated, Dan claims).</p>
<p>Nobody's actually volunteered yet.</p>
<p><a href='http://groups.google.com/groups?threadm=Pine.LNX.4.58.0310091138510.9021@sprite.sidhe.org' target='_blank'>groups.google.com</a></p>
<a name='Parrot gets pioctl'></a><h2>Parrot gets <code>pioctl</code></h2>
<p>Melvin Smith added a <code>pioctl</code> op for general purpose IO manipulation
in the style of the UNIX <code>ioctl</code> syscall. Dan reckoned it was almost
certainly time to start thinking about a better API (though we're not
sure if that's because he doesn't like <code>ioctl</code> as a name). Steve
Fink suggested using keyed access to the IO PMC, so you could do</p>
<pre>   set IO, P0[.BUFSIZE]
   set P0[.BUFSIZE], 8192</pre>
<p>Steve later backed away from this suggestion, suggesting that maybe
<code>get/setprop</code> fit the semantics better, but Leo thought that
'fundamentals' like buffer size belonged as keyed access, with
properties being reserved for setting up things like encoding
layers.</p>
<p><a href='http://groups.google.com/groups?threadm=5.1.1.6.2.20031009214007.086e1850@pop.mindspring.com' target='_blank'>groups.google.com</a></p>
<a name='PCC and IMC'></a><h2>PCC and IMC</h2>
<p>Gregor N. Purdy suggested that, instead of going through the hassle of
explicitly setting up a function call under the parrot calling
conventions, one could call the the function in the style of a macro
call. Leo wasn't keen, IMCC is still an assembler after all (just a
very sophisticated one). It looks like, unless Dan rules otherwise,
we're going to stick with the current explicit method of function
invocation setup, and human parrot programmers will just have to
set up convenience macros explicitly.</p>
<p><a href='http://groups.google.com/groups?threadm=1065972980.22829.13.camel@borg.focusresearch.com' target='_blank'>groups.google.com</a></p>
<a name='Meanwhile in perl6-language'></a><h1>Meanwhile in perl6-language</h1>
<a name='Acknowledgements, Announcements, Apologies, Alliteration'></a><h1>Acknowledgements, Announcements, Apologies, Alliteration</h1>
<p>I'm really sorry I used the '...' joke about perl6-language
again. Write something people!</p>
<p>Tuesday continues to be the new Monday, and will probably remain so
for a while.</p>
<p><a href='http://www.bofh.org.uk:8080/' target='_blank'>www.bofh.org.uk</a> will hopefully be hosting my photos
from the weekend's workshop.</p>
<p>If you found this summary valuable, you might like to consider one or
more of the following suggestions:</p>
<ul>
<li><a name='Get involved. There's at least two calls for volunteers out at the moment related to Parrot. Okay, they're not necessarily easy, but if you turn up on the lists (check dev.perl.org/perl6/ and www.parrotcode.org/ for subscription details) and offer to help I'm sure we'll find something that needs doing.'></a>Get involved. There's at least two calls for volunteers out at the
moment related to Parrot. Okay, they're not necessarily easy, but if
you turn up on the lists (check <a href='http://dev.perl.org/perl6/' target='_blank'>dev.perl.org</a> and
<a href='http://www.parrotcode.org/' target='_blank'>www.parrotcode.org</a> for subscription details) and offer to
help I'm sure we'll find something that needs doing.</li>
<li><a name='Support Larry, Dan, Damian and company by donating to the Perl Foundation at donate.perl-foundation.org/. Fun as hacking Perl 6 no doubt is, it's very easy to get distracted from it by the pressing need to feed yourself.'></a>Support Larry, Dan, Damian and company by donating to the Perl
Foundation at <a href='http://donate.perl-foundation.org/.' target='_blank'>donate.perl-foundation.org</a> Fun as hacking
Perl 6 no doubt is, it's very easy to get distracted from it by the
pressing need to feed yourself.</li>
<li><a name='Boost my ego. Praise my photos/this summary/my lackadaisical weblog. Suggest improvements, point out my grammatical howlers, hire me to do cool stuff, press gifts upon me. Contact me at p<a href='mailto:6summarizer@bofh.org.uk'>6summarizer@bofh.org.uk</a>, unless you're a spamming scumbag I can pretty much promise you a prompt response. Assuming I'm not out hooning 'round the countryside in my new car...'></a>Boost my ego. Praise my photos/this summary/my lackadaisical
weblog. Suggest improvements, point out my grammatical howlers, hire
me to do cool stuff, press gifts upon me. Contact me at
<i><a href='http://search.cpan.org/perldoc?<a href='mailto:p6summarizer@bofh.org.uk'>p6summarizer@bofh.org.uk</a>'>p<a href='mailto:6summarizer@bofh.org.uk'>6summarizer@bofh.org.uk</a></a></i>, unless you're a spamming scumbag I can
pretty much promise you a prompt response. Assuming I'm not out
hooning 'round the countryside in my new car...</li>
</ul>
</div>
